#ifndef LENGTHUNIT_H
#define LENGTHUNIT_H

#include <BaseUnitConversion.h>


#define  MILE  LengthUnit::getMileInstance()
#define  YARD  LengthUnit::getYardInstance()
#define  FEET  LengthUnit::getFeetInstance()


struct LengthUnit
{
	unsigned int toBase() const;

	std::string outputString(unsigned int amountInBase) const;

    //Should be not called by user.
    static const LengthUnit* getMileInstance();
    static const LengthUnit* getYardInstance();
    static const LengthUnit* getFeetInstance();

    BaseUnitConversion<LengthUnit> baseUnitConversion;
private:
    LengthUnit(const std::string& name, unsigned int factor, const LengthUnit* referenceUnit);

};

#endif
